package java8;

import pojo.Person;

import java.util.Optional;

/**
 * @projectName: java-sample
 * @description:
 * @author: Adam
 * @create: 2019-11-06 14:30
 **/

public class OptionalDemo {
    /*Optional本质是一个容器，需要我们将对象实例传入该容器中。Optional 的构造方法为 private，
    无法直接使用 new 构建对象，只能使用 Optional 提供的静态方法创建。
    Optional 三个创建方法如下：
      Optional.of(obj),如果对象为 null，将会抛出 NPE。
      Optional.ofNullable(obj),如果对象为 null,将会创建不包含值的 empty Optional 对象实例。
      Optional.empty() 等同于 Optional.ofNullable(null)*/
    /*只有在确定对象不会为 null 的情况使用 Optional#of，否则建议使用 Optional#ofNullable方法。*/
    public static void main(String[] args){
          new OptionalDemo().secondDemo();
    }

    public void helloOptional(){
        Person person = new Person();
        Optional<Person> optCompany = Optional.ofNullable(person);
        // 与直接使用空指针判断没有任何区别
        if (optCompany.isPresent()) {
            System.out.println(optCompany.get().getName());
        }
    }

    public void secondDemo(){
        Person person = new Person();
        person.setName("小王");
        Optional<Person> optCompany = Optional.ofNullable(person);
        optCompany.ifPresent(System.out::println);
    }
}
